/**
 * 
 */
package Module_2;

/**
 * @author Schweingruber Roger
 * @date 16.11.2011
 * @version 1.0
 */
public class Verkehr {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		final int liter = 20; // Anzahl Liter beim Tanken
		final int zeit = 60; // Zeit in Minuten
		final float km = 300f; // Anzahl zu fahrende km

		Auto smart = new Auto();
		smart.setNamen("Smart");
		smart.setFahrtrichtung("Rechts");
		smart.tankInhalt = 0f;
		smart.kilometerStand = 0;
		smart.verbrauch = 5; // Liter pro 100 km
		smart.starten();
		smart.setGeschwindigkeit(0);

		System.out.println("\n" + smart.getNamen() + " startet in Richtung "
				+ smart.getFahrtrichtung() + "\n");
		fahrenLassen(smart, liter, km);

		Auto audi = new Auto();
		audi.setNamen("Audi A3");
		audi.setFahrtrichtung("Links");
		audi.tankInhalt = 20f;
		audi.kilometerStand = 0;
		audi.verbrauch = 9; // Liter pro 100 km
		audi.starten();
		audi.setGeschwindigkeit(180);

		System.out.println("\n" + audi.getNamen() + " startet in Richtung "
				+ audi.getFahrtrichtung() + "\n");
		fahrenLassen(audi, liter, km);

		ElektroAuto eleMobil = new ElektroAuto();
		eleMobil.setNamen("Elektromobil");
		eleMobil.setFahrtrichtung("Rechts und Links");
		eleMobil.ladung = 20f;
		eleMobil.kilometerStand = 0;
		eleMobil.verbrauch = 12; // Volt pro 100 km
		eleMobil.starten();
		eleMobil.setGeschwindigkeit(2);

		System.out.println("\n" + eleMobil.getNamen() + " startet in Richtung "
				+ eleMobil.getFahrtrichtung() + "\n");
		fahrenLassen(eleMobil, zeit, km);

		System.out.println(Fahrzeug.zaehler);

	}

	/**
	 * Laesst ein Auto fahren
	 * 
	 * @param auto
	 * @param liter
	 * @param km
	 */
	private static void fahrenLassen(Auto auto, int liter, float km) {
		
		for (int i = 0; i < km; i++) {
			if (auto.tankInhalt > 0.5f) {				
				if (auto.fahren(km) == false) {
					break;
				}
			} else {
				auto.tanken(liter);
			}

		}
	}

	/**
	 * Laesst ein Fahrzeug fahren
	 * 
	 * @param auto
	 *            / Elektroauto
	 * @param zeit
	 * @param km
	 */
	private static void fahrenLassen(ElektroAuto auto, int zeit, float km) {
		for (int i = 0; i < km; i++) {

			if (auto.ladung > 0.5f) {
				if (auto.fahren(km) == false){
					break;
				}
			} else {
				auto.tanken(zeit);
			}

		}

	}

}
